/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ebe.dao;

import ebe.model.Usuario;
import ebe.model.Vaga;
import ebe.view.VagasPorCidade;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Mirelle
 */
public class VagaDAO {

    public List<Vaga> procuraVagas() {

        List<Vaga> listVagas = new ArrayList<Vaga>();
        return listVagas;
    }

    public List<Vaga> buscaVaga(DB db, String estado, String cidade, String funcao) throws SQLException {
        List<Vaga> v = new ArrayList<Vaga>();
        PreparedStatement vg = db.sql("select * from vaga where estado=? and cidade=? and funcao=?");
        vg.setString(1, estado);
        vg.setString(2, cidade);
        vg.setString(3, funcao);
        ResultSet rs = vg.executeQuery();
        while (rs.next()) {
            v.add(le(db, rs));
        }
        rs.close();
        vg.close();
        return v;
    }

    public List<VagasPorCidade> vagasPorCidade(DB db) throws SQLException {
        List<VagasPorCidade> v = new ArrayList<VagasPorCidade>();
        PreparedStatement vg = db.sql("select estado, cidade, count (*) as qtde from vaga group by cidade, estado order by 3 desc");
        ResultSet rs = vg.executeQuery();
        while (rs.next()) {
            VagasPorCidade vi = new VagasPorCidade(rs.getString("estado"),
                    rs.getString("cidade"), rs.getInt("qtde"));
            v.add(vi);
        }
        rs.close();
        vg.close();
        return v;
    }

    private Vaga le(DB db, ResultSet rs) throws SQLException {
        UsuarioDAO usr = new UsuarioDAO();
        Vaga v = new Vaga(usr.pegaUsuarioPeloCPF(db, rs.getString("cpf_usuario_contratante")), rs.getInt("codigo_vaga"), rs.getString("estado"),
                rs.getString("cidade"), rs.getString("funcao"), rs.getDate("data_inicio"),
                rs.getString("duracao"), rs.getString("sexo_desejado"), rs.getString("remuneracao"), rs.getString("forma_contato"),
                rs.getString("contato"));
        return v;
    }

    public void salvar(DB db, Vaga vaga) throws SQLException {
        PreparedStatement c = db.sql("insert into vaga( estado, cidade, funcao,"
                + "data_inicio, duracao, sexo_desejado, remuneracao, forma_contato, contato, cpf_usuario_contratante)"
                + "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

        //c.setInt(1, vaga.getCodigo_vaga());
        c.setString(1, vaga.getEstado());
        c.setString(2, vaga.getCidade());
        c.setString(3, vaga.getFuncao());
        c.setDate(4, vaga.getData_inicio());
        c.setString(5, vaga.getDuracao());
        c.setString(6, vaga.getSexo_desejado());
        c.setString(7, vaga.getRemuneracao());
        c.setString(8, vaga.getForma_contato());
        c.setString(9, vaga.getContato());
        c.setString(10, vaga.getUsuario().getCpf());

        c.executeUpdate();
    }

    public void salvar(DB db, Usuario usu) throws SQLException {
        PreparedStatement c = db.sql("insert into usuario(cpf, nome, email, senha, data_nasc,"
                + "sexo, escolaridade, estado, cidade, endereco_compl, descricao, foto)"
                + "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        c.setString(1, usu.getCpf());
        c.setString(2, usu.getNome());
        c.setString(3, usu.getEmail());
        c.setString(4, usu.getSenha());
        c.setDate(5, usu.getData_nasc());
        c.setString(6, usu.getSexo());
        c.setString(7, usu.getEscolaridade());
        c.setString(8, usu.getEstado());
        c.setString(9, usu.getCidade());
        c.setString(10, usu.getEndereco_compl());
        c.setString(11, usu.getDescricao());
        c.setBytes(12, usu.getFoto());
        c.executeUpdate();

    }
}
